package com.sayimo.maker.user.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.sayimo.framework.exception.DaoException;
import com.sayimo.framework.exception.ServiceException;
import com.sayimo.maker.user.vo.Customer;
import com.sayimo.maker.user.vo.EnterpriseWallet;
import com.sayimo.maker.user.vo.Wallet;


/**
 * @Project: sayimoWeixinWeb
 * @ClassName: CustomerInterfaceService
 * @Description: 用户Service
 * @Author:	王瑞清
 * @Date:	日期：2015年8月17日  时间：下午2:53:43
 * @Version 1.0.0
 */
public interface CustomerInterfaceService {
	
	/**
	 * 
	* @Title: getUserInfo
	* @Author: 田超
	* @Date:日期：2017年2月15日 : 上午9:55:17
	* @Description:获取用户信息
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String, Object> getUserInfo(String accout)throws ServiceException;
	/**
	 * 
	* @Title: getUserInfo
	* @Author: 田超
	* @Date:日期：2017年2月15日 : 上午9:55:17
	* @Description:个人中心,个人资料
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String,Object> getUserDetail(String accout) throws ServiceException;
	/**
	* @Title: getCustomerNum
	* @Author: 田超
	* @Date:日期：2017年2月16日 : 下午4:03:47
	* @Description:会员管理
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String,Object> getCustomerNum(String accout)throws ServiceException;
	
	public Map<String,Object> updateCustomerInfo(HttpServletRequest request) throws ServiceException;
	/**
	 * @Title: queryCustomerByAccount 
	 * @Description: 查询注册用户信息
	 * @param customer
	 * @throws ServiceException
	 * @return List
	 */
	public List<Customer> queryCustomerByCond(Customer customer) throws ServiceException;
	

	/** 
	* @Title: queryAllLowerLevelMembers
	* @Description:查询会员下对应的所有下级会员信息
	* @param parentId
	* @throws ServiceException
	* @return MessageObject
	*/ 
	@SuppressWarnings("rawtypes")
	public Map queryAllLowerLevelMembers(Integer parentId)  throws ServiceException;
	/**
	 * 
	 * @MethodName queryOrdersListCntByStatus
	 * @Description 个人中心统计“未支付，已支付，待评价商品数量”
	 * 
	 * @author chenpy
	 * @date 2015年12月28日 下午2:14:40
	 * @param 
	 * @return Map
	 * @VERSION 1.0.0
	 */
	@SuppressWarnings("rawtypes")
	public Map queryOrdersListCntByStatus(Customer customer,Integer mallType) throws ServiceException;
	
	 /**
	 * @Package com.sayimo.maker.user.service
	 * @Author 龚益君
	 * @MethodName:makerLogin
	 * @Description:彩虹客户端登陆
	 * @param customer
	 * @return
	 * @Date 2016年12月30日,上午9:31:03
	 */
	public Map<String,Object> makerLogin (Customer customer);
	 /**
	 * @Package com.sayimo.maker.user.service
	 * @Author 龚益君
	 * @MethodName:makerRegister
	 * @Description:客户端注册
	 * @param customer
	 * @return
	 * @Date 2016年12月30日,上午9:32:32
	 */
	public Map<String,Object> makerRegister(Customer customer,String busCode);
	/**
	 * @Package com.sayimo.maker.user.service
	 * @Author 谭新
	 * @MethodName: createQrCode
	 * @Description:重新生成二维码
	 * @return Map<String,Object>
	 * @Date 2017年4月6日,上午11:21:26
	 */
	public Map<String,Object> createQrCode(String qrCodeUrl);
	 /**
	 * @Package com.sayimo.maker.user.service
	 * @Author 龚益君
	 * @MethodName:validateAccount
	 * @Description:验证账号是否可用
	 * @param account
	 * @return
	 * @Date 2016年12月30日,上午9:53:23
	 */
	public Map<String, Object> validateAccount(String account);
	/**
	 * @Package com.sayimo.maker.user.service
	 * @Author TANXIN
	 * @MethodName:un_BindPhone
	 * @Description:绑定手机
	 * @param request
	 * @param customer
	 * @param busCode
	 * @return
	 * @throws ServiceException
	 * @Date 2017年1月3日,下午4:44:24
	 */
	public Map updateUn_BindPhone(String mobilePhone, String customerId,String smsCode, String busCode) throws ServiceException;
	/**
	 * 
	* @Title: updatePassword 
	* @Author: 田超
	* @Date:日期：2016年12月3日  时间：上午10:59:39
	* @Description: 忘记密码,修改密码
	* @return
	* @throws ServiceException
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String,Object> updatePassword(HttpServletRequest request) throws ServiceException;
	
	/**
	 * 
	* @Title: modifyPassword 
	* @Author: 田超
	* @Date:日期：2016年12月5日  时间：上午10:28:15
	* @Description: 自己修改密码
	* @param account
	* @return
	* @throws ServiceException
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String,Object> updateModifyPassword(HttpServletRequest request) throws ServiceException;
	
	/**
	 * 
	* @Title: modifyPhone 
	* @Author: 田超
	* @Date:日期：2016年12月5日  时间：下午2:26:03
	* @Description: 修改绑定手机
	* @param account
	* @return
	* @throws ServiceException
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String,Object> updateModifyPhone(HttpServletRequest request) throws ServiceException;
	
	/**
	 * 
	* @Title: clearProviderToken 
	* @Author: 田超
	* @Date:日期：2016年12月12日  时间：下午2:13:17
	* @Description: 退出账号
	* @param providerAccout
	* @return
	* @throws ServiceException
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String,Object> clearProviderToken(HttpServletRequest request) throws ServiceException;
	/**
	 * @Package com.sayimo.maker.user.service
	 * @Author TANXIN
	 * @MethodName:updateCustomer
	 * @Description:修改账号信息
	 * @param customer
	 * @return
	 * @throws ServiceException
	 * @Date 2017年1月4日,下午12:10:35
	 */
	public Map<String, Object> updateCustomer(Customer customer) throws ServiceException;
	
	/**
	  * @package com.sayimo.maker.user.service
	  * @author chenpy
	  * @Title:
	  * @Description: 会员绑定银行卡
	  * @param 
	  * @throws 
	  * @return
	  * @date 2017-02-20 上午11:46:34
	  */
	public Map<String, Object> bindBankCard() throws ServiceException;
	
	/**
	  * @package com.sayimo.maker.user.service
	  * @author chenpy
	  * @Title:
	  * @Description:申请成为创客
	  * @param 
	  * @throws 
	  * @return
	  * @date 2017-02-20 上午11:47:56
	  */
	public Map<String, Object> applyMaker() throws ServiceException;
	
	/**
	  * @package com.sayimo.maker.user.service
	  * @author chenpy
	  * @Title:
	  * @Description:创客申请回掉
	  * <p>
	  * 	一、银星创客：
	  * 	缴纳298元，奖励上级50元现金，获得298个银积分
	  * 	二、金星创客
	  * 	缴纳598元，奖励上级50元现金，获得798个银积分
	  * @param customerId 会员ID
	  * @param tradeNo 订单号
	  * @throws 
	  * @return
	  * @date 2017-02-20 下午4:33:16
	  */
	public Map<String, Object> applyMakerCallback(Integer customerId, String tradeNo,Integer ownAwardRule) throws ServiceException;
	
	/**
	  * @package com.sayimo.maker.user.service
	  * @author chenpy
	  * @Title: rechargeSilverScore
	  * @Description: 会员充值（银积分）
	  * @param 
	  * @throws 
	  * @return
	  * @date 2017-02-21 上午10:54:15
	  */
	public Map<String, Object> rechargeSilverScore(String passWord) throws ServiceException;
	
	/**
	  * @package com.sayimo.maker.user
	  * @author chenpy
	  * @Title: rechargeSilverScoreCallback
	  * @Description:用户充值（银积分）回调
	  * @param 
	  * @throws 
	  * @return
	  * @date 2017-02-20 上午11:37:30
	  */
	public Map<String, Object> rechargeSilverScoreCallback(Integer customerId, String tradeNo) throws ServiceException;
	/**
	  * @package com.sayimo.maker.user.service
	  * @author wangyang
	  * @Title: unionScanCodePay
	  * @Description: 用户扫联盟商二维码支付
	  * @param 
	  * @throws 
	  * @return
	  * @date 2017-03-07 下午16:38:30
	  */
	public Map<String, Object> unionScanCodePay()throws Exception;
	/**
	  * @package com.sayimo.maker.user.service
	  * @author wangyang
	  * @Title: unionScanCodePayCallback
	  * @Description: 用户扫联盟商二维码支付回调
	  * @param 
	  * @throws 
	  * @return
	  * @date 2017-03-07 下午17:31:08
	  */
	public Map<String, Object> unionScanCodePayCallback(String tradeNo, String consumerOrdersNo)throws ServiceException;

	/**
	  * @package com.sayimo.maker.user.service
	  * @author chenpy
	  * @Title: queryMemberMustReadList
	  * @Description: 查询会员必读列表
	  * @param 
	  * @throws 
	  * @return
	  * @date 2017-03-07 下午17:31:08
	  */
	public Map queryMemberMustReadList(String mark) throws ServiceException;
	
	/**
	 * @package com.sayimo.maker.user
	 * @author chenpy
	 * @Title:
	 * @Description:银星创客升级成为金星创客
	 * @param
	 * @throws @return
	 * @date 2017-02-20 上午11:37:30
	 */
	public Map<String, Object> upgradeGoldMaker() throws ServiceException;
	
	/**
	 * @package com.sayimo.maker.user
	 * @author chenpy
	 * @Title:
	 * @Description:升级金星申请回掉
	 * @param
	 * @throws @return
	 * @date 2017-02-20 上午11:37:30
	 */
	public Map<String, Object> upgradeGoldMakerCallback(Integer customerId, String tradeNo) throws ServiceException;
	
	 /**
	 * @Package com.sayimo.maker.user.service
	 * @Author 龚益君
	 * @MethodName:personalWalletBeToCash
	 * @Description:用户个人提现
	 * @param customerId 
	 * @param payPrice 提现金额
	 * @return
	 * @throws ServiceException
	 * @throws DaoException 
	 * @Date 2017年3月14日,下午4:08:33
	 */
	public Map<String,Object> personalWalletBeToCash(Integer customerId,String payPrice,String passWord)throws ServiceException, DaoException;	
	 /**
	 * @Package com.sayimo.maker.user.service
	 * @Author 龚益君
	 * @MethodName:updateEnterpriseWalletInfo
	 * @Description:修改企业钱包绑定银行信息
	 * @param customerId
	 * @param wallet
	 * @return
	 * @throws ServiceException
	 * @Date 2017年4月17日,上午11:25:59
	 */
	public Map<String, Object> updateEnterpriseWalletInfo(EnterpriseWallet wallet) throws ServiceException ;
	 /**
	 * @Package com.sayimo.maker.user.service
	 * @Author 龚益君
	 * @MethodName:queryEnterpriseWalletInfo
	 * @Description:获取商企钱包信息
	 * @param customerId
	 * @return
	 * @throws ServiceException
	 * @Date 2017年4月17日,下午2:34:22
	 */
	public Map<String, Object> queryEnterpriseWalletInfo(Integer customerId) throws ServiceException;	
	 /**
	 * @Package com.sayimo.maker.user.service
	 * @Author 龚益君
	 * @MethodName:queryAllBankBranch
	 * @Description:获取地区下总行所有支行信息
	 * @param code
	 * @param bankCode
	 * @return
	 * @throws ServiceException
	 * @Date 2017年4月17日,下午4:01:42
	 */
	public Map<String, Object> queryAllBankBranch(String code, String bankCode) throws ServiceException;
}
